#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn=5e5+10;
int n;
int arr[maxn];
int min_r[maxn]; // 计算 i 及其右边的最小值 相当于把这一维优化了
stack<int> stk;

void solve(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>arr[i];
	}
	min_r[n+1]=1e18;
	for(int i=n;i>=1;i--){
		min_r[i]=min(arr[i], min_r[i+1]);
	}
	int mxa=-1e18;
	stk.push(arr[1]);
	for(int i=2;i<=n;i++){
		if(arr[i]>stk.top()){ // 找到了一个新的最大值
			mxa=max(mxa, stk.top()); // 更新次大值
			stk.pop();
			stk.push(arr[i]);
		} else {
			if(arr[i]<mxa && min_r[i+1]<arr[i]){
				cout<<"YES"<<'\n';
				return ;
			} 
		}
	}
	cout<<"NO"<<'\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0),cout.tie(0);
	solve();
	return 0;
}
